ZT Blog
dev

Proxmox 宿主机网络“假死”修复记:一次由 Intel I219-V 网卡断流引发的排查实录

Proxmox 宿主机网络“假死”修复记:一次由 Intel I219-V 网卡断流引发的排查实录

背景

一台运行 Proxmox VE 的服务器,搭载 Intel I219-V 板载网卡(rev 11)。某日突然出现 所有虚拟机断网、宿主机 SSH 无法连接、路由器 ARP 表中找不到该设备 的严重故障,唯有物理重启才能临时恢复。

现象描述

  • 故障时刻:5月29日 23:45 至 5月30日 00:04 期间持续出现网络中断。
  • 故障表现:
    • 宿主机 SSH 无法连接(Connection timeout)。
    • 所有运行在该宿主机上的虚拟机完全失去网络通信能力。
    • 在路由器管理界面中,该 PVE 主机的 IP 对应的 ARP 条目消失,如同设备从网络中“物理拔出”。
    • 物理重启后网络恢复正常,但一段时间后(尤其是在网络负载升高时)会再次发生。

排查过程:锁定 Intel I219-V 网卡断流

1. 确认网卡型号

lspci | grep -i ethernet
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (17) I219-V (rev 11)

2. 检查内核日志中是否有典型的网卡驱动报错

dmesg -T | grep -iE "e1000e|watchdog|reset adapter|Hardware Unit Hang"

若故障发生且未重启时,典型报错为:
e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang

3. 查看网卡硬件卸载状态

ethtool -k nic0 | grep -E 'rx-checksumming|tx-checksumming|tso|gso|gro'

输出显示:

rx-checksumming: on
tx-checksumming: on
...

关键发现:硬件校验和卸载功能为开启状态。这正是导致 Intel I219-V 在高负载下“假死”的元凶。

问题根因:Intel I219-V 与 e1000e 驱动的兼容性缺陷

  • 硬件层面:I219-V 网卡的硬件卸载引擎存在固件缺陷,在处理高负载、虚拟化环境的大流量时,其内部 DMA 状态机可能进入一种不可恢复的“挂起”状态。
  • 驱动层面:Linux 内核中的 e1000e 驱动未能妥善处理该异常,无法自动复位网卡,导致网卡彻底失效(数据包收发停止)。
  • 触发条件:任何使网卡达到一定吞吐量的事件均可诱发,例如:
    • 大量小包(如 SSH 暴力扫描)
    • 虚拟机间大文件传输
    • 启用了 TSO/GSO/checksum offloading 的混合流量
  • 为什么表现为“路由器看不到设备”:网卡停止工作后,无法响应 ARP 请求,路由器的邻居表条目老化后无法刷新,自然将主机标记为离线。

该问题已被 Intel 工程师在 e1000e 驱动代码注释中非正式承认,社区公认的解决方案就是 禁用网卡硬件卸载

解决方案:永久禁用硬件卸载

临时修复(即刻生效)

ethtool -K nic0 rx-checksumming off tx-checksumming off tso off gso off gro off

此命令会立即关闭相关卸载功能,但重启后失效

永久修复(推荐)

编辑 /etc/network/interfaces,在物理网卡 nic0 的配置段中添加 post-up 命令:

auto nic0
iface nic0 inet manual
    post-up /usr/sbin/ethtool -K nic0 rx-checksumming off tx-checksumming off tso off gso off gro off

auto vmbr0
iface vmbr0 inet static
    address 192.168.2.182/24
    gateway 192.168.2.1
    bridge-ports nic0
    bridge-stp off
    bridge-fd 0

注意:网卡名称可能为 enp0s31f6nic0(如本例),请根据 ip link show 输出确认。

执行 reboot 重启后,再次验证:

ethtool -k nic0 | grep -E 'rx-checksumming|tx-checksumming'

现在应为 off

验证与效果

  • 重启后运行 ethtool -k nic0,确认所有卸载项为 off
  • 进行高负载网络测试(如多虚拟机间 iperf3 测速),网络持续稳定。
  • 即使再次遭遇 SSH 扫描或大流量传输,不再出现 ARP 消失或网络中断。

总结

阶段 结论
问题表象 全网络中断,路由器 ARP 丢失
真实根因 Intel I219-V 硬件卸载缺陷 + e1000e 驱动处理不当
永久方案 禁用网卡校验和卸载及 TSO/GSO/GRO

一句话经验:当你发现 Proxmox 主机在无任何硬件变更的情况下突然“失联”,且重启即可恢复,请首先检查网卡硬件卸载状态 —— 尤其是使用 Intel I21x 系列网卡时。


本文所有命令均在 Debian 12 / Proxmox VE 环境下验证通过。